package com.ruoyi.project.wx.service.impl;


import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bootdo.UuidUtil;
import com.ruoyi.project.wx.dao.GoodsSpecDao;
import com.ruoyi.project.wx.dao.GoodsSpecValuesDao;
import com.ruoyi.project.wx.domain.GoodsSpecDO;
import com.ruoyi.project.wx.domain.GoodsSpecValuesDO;
import com.ruoyi.project.wx.service.GoodsSpecService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;
import java.util.Map;


@Service
public class GoodsSpecServiceImpl implements GoodsSpecService {
	@Autowired
	private GoodsSpecDao goodsSpecDao;
	@Autowired
	private GoodsSpecValuesDao goodsSpecValuesDao;
	
	@Override
	public GoodsSpecDO get(String id){
		return goodsSpecDao.get(id);
	}
	
	@Override
	public List<GoodsSpecDO> list(Map<String, Object> map){
		return goodsSpecDao.list(map);
	}
	
	@Override
	public int count(Map<String, Object> map){
		return goodsSpecDao.count(map);
	}
	
	@Override
	public int save(GoodsSpecDO goodsSpec){
		return goodsSpecDao.save(goodsSpec);
	}
	
	@Override
	public int update(GoodsSpecDO goodsSpec){
		return goodsSpecDao.update(goodsSpec);
	}
	
	@Override
	public int remove(String id){
		return goodsSpecDao.remove(id);
	}
	
	@Override
	public int batchRemove(String[] ids){
		return goodsSpecDao.batchRemove(ids);
	}

	@Override
	public List<GoodsSpecDO> queryAll() {
		return goodsSpecDao.queryAll();
	}
	@Transactional(propagation=Propagation.REQUIRED)
	@Override
	public int edit(GoodsSpecDO goodsSpec, String[] spec_value, String[] spec_picurl, String[] spec_value_id,
			String uid) {
		goodsSpec.setGmtModified(new Date());
		this.update(goodsSpec);
		goodsSpecValuesDao.delete(goodsSpec.getId());
		for (int i = 0; i < spec_value.length; i++) {
			GoodsSpecValuesDO values = new GoodsSpecValuesDO();

			values.setSpecId(goodsSpec.getId());
			values.setSpecValue(spec_value[i]);
			values.setLocation(i);
			if (goodsSpec.getType() == 1) {
				values.setSpecPicurl(spec_picurl[i]);
			}
			if (StringUtils.isBlank(spec_value_id[i])){
				values.setId(UuidUtil.get32UUID());
			}else {
				values.setId(spec_value_id[i]);
			}
			goodsSpecValuesDao.save(values);
		}
		return 1;
	}
	@Transactional(propagation= Propagation.REQUIRED)
	@Override
	public int add(GoodsSpecDO goodsSpec, String[] spec_value, String[] spec_picurl) {
		Date date =new Date();
		goodsSpec.setId(UuidUtil.get32UUID());
		goodsSpec.setGmtCreate(date);
		goodsSpec.setDelFlag(0);
		int count = this.save(goodsSpec);
		for (int i = 0; i < spec_value.length; i++) {
			GoodsSpecValuesDO values = new GoodsSpecValuesDO();
			values.setId(UuidUtil.get32UUID());
			values.setSpecId(goodsSpec.getId());
			values.setSpecValue(spec_value[i]);
			if (goodsSpec.getType() == 1) {
				values.setSpecPicurl(spec_picurl[i]);
			}
			values.setGmtCreate(date);
			values.setLocation(i);
			goodsSpecValuesDao.save(values);
		}
		return count;
	}

	
	
}
